#!/usr/bin/env bash

# 检查参数是否正确
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <测试次数> <测试名称>"
    echo "示例: $0 5 TestSnapshot"
    exit 1
fi

# 解析参数
NUM_RUNS=$1
TEST_NAME=$2
OUTPUT_FILE="${TEST_NAME}-${NUM_RUNS}.txt"

# 确保输出文件存在且初始为空
> "$OUTPUT_FILE"
echo "=== 测试开始时间: $(date) ===" >> "$OUTPUT_FILE"
echo "=== 测试名称: $TEST_NAME, 执行次数: $NUM_RUNS ===" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"

# 循环执行测试
for ((i=1; i<=NUM_RUNS; i++)); do
    echo "=== 第 $i 次测试开始: $(date) ===" >> "$OUTPUT_FILE"
    echo "=== 执行命令: go test -race -run $TEST_NAME ===" >> "$OUTPUT_FILE"
    echo "" >> "$OUTPUT_FILE"

    # 执行测试并将输出追加到文件
    go test -race -run "$TEST_NAME" >> "$OUTPUT_FILE" 2>&1

    echo "" >> "$OUTPUT_FILE"
    echo "=== 第 $i 次测试结束: $(date) ===" >> "$OUTPUT_FILE"
    echo "=========================================" >> "$OUTPUT_FILE"
    echo "" >> "$OUTPUT_FILE"

    # 可选：每次测试后等待1秒，避免资源竞争
    sleep 1
done


echo "=== 所有测试完成时间: $(date) ===" >> "$OUTPUT_FILE"
echo "测试结果已保存到 $OUTPUT_FILE"
